<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>温控器开源使用文档</title>
    <style>
        /* CSS 样式部分 */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body {
            font-family: 'Microsoft YaHei', sans-serif;
            line-height: 1.6;
            background-color: #1a1a1a;
            color: #e0e0e0;
            min-height: 100vh;
        }

        .container {
            display: flex;
            min-height: 100vh;
        }

        /* 侧边导航栏样式 */
        .sidebar {
            width: 250px;
            background-color: #2d2d2d;
            padding: 20px;
            border-right: 1px solid #3d3d3d;
            position: fixed;
            top: 0;
            bottom: 0;
            overflow-y: auto;
        }

        .sidebar nav ul {
            list-style: none;
        }

        .sidebar nav ul li {
            margin-bottom: 10px;
        }

        .sidebar nav ul li a {
            color: #e0e0e0;
            text-decoration: none;
            display: block;
            padding: 8px 12px;
            border-radius: 4px;
            transition: background-color 0.3s;
        }

        .sidebar nav ul li a:hover {
            background-color: #3d3d3d;
        }

        /* 主要内容区域样式 */
        .main-content {
            flex: 1;
            padding: 30px 40px;
            margin-left: 250px;
        }

        header {
            text-align: center;
            padding: 20px 0;
            border-bottom: 1px solid #3d3d3d;
        }

        main {
            padding: 20px 0;
        }

        footer {
            text-align: center;
            padding: 20px 0;
            color: #888;
            border-top: 1px solid #3d3d3d;
        }

        /* 添加图标链接样式 */
        .footer-icon {
            display: inline-block;
            margin-top: 20px;
        }
        
        .footer-icon img {
            width: 96px;
            height: 96px;
            vertical-align: middle;
            transition: opacity 0.3s;
            filter: brightness(1.5);
        }
        
        .footer-icon:hover img {
            opacity: 0.8;
            transform: scale(1.1);
            transition: all 0.3s ease;
        }

        /* 章节样式调整 */
        section {
            margin-bottom: 60px;
            padding: 30px;
            background-color: #252525;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
        }

        section h2 {
            margin-bottom: 25px;
            padding-bottom: 15px;
            border-bottom: 2px solid #3d3d3d;
        }

        section h3 {
            margin-top: 30px;
            margin-bottom: 15px;
            color: #b8b8b8;
        }

        /* 添加表格样式 */
        .pin-table {
            width: 100%;
            border-collapse: collapse;
            margin: 20px 0;
        }

        .pin-table th, .pin-table td {
            border: 1px solid #3d3d3d;
            padding: 8px;
            text-align: left;
        }

        .pin-table th {
            background-color: #2d2d2d;
        }

        .pin-table tr:hover {
            background-color: #2a2a2a;
        }

        .interface-note {
            margin-top: 20px;
            padding: 15px;
            background-color: #2d2d2d;
            border-radius: 4px;
        }

        /* 版本历史样式 */
        .version-list {
            list-style: none;
        }

        .version-list h4 {
            color: #4a9eff;
            margin: 30px 0 15px 0;
            padding-bottom: 8px;
            border-bottom: 1px solid #3d3d3d;
        }

        .version-list > li > ul > li {
            margin: 15px 0;
            padding-left: 20px;
            border-left: 3px solid #3d3d3d;
        }

        .version-list strong {
            color: #e0e0e0;
            display: inline-block;
            margin-bottom: 8px;
        }

        .version-list ul ul {
            margin-left: 20px;
            list-style: disc;
            color: #b8b8b8;
        }

        .version-list ul ul ul {
            list-style: circle;
            margin-top: 5px;
            margin-bottom: 5px;
        }

        /* 添加注意事项样式 */
        .note {
            margin: 20px 0;
            padding: 15px;
            background-color: #2d2d2d;
            border-left: 4px solid #4a9eff;
            border-radius: 4px;
        }

        .note strong {
            color: #4a9eff;
        }

        /* 调整表格样式 */
        .pin-table td {
            vertical-align: top;
        }
    </style>
</head>
<body>
    <div class="container">
        <aside class="sidebar">
            <nav>
                <ul>
                    <li><a href="#introduction">简介</a></li>
                    <li><a href="#hardware">硬件架构</a></li>
                    <li><a href="#software">软件架构</a></li>
                    <li><a href="#usage">使用方法</a></li>
                    <li><a href="#modify">程序修订记录</a></li>
                    <li><a href="#help">帮助</a></li>
                </ul>
            </nav>
        </aside>

        <div class="main-content">
            <header>
                <h1>温控器开源使用文档</h1>
            </header>

            <main>
                <section id="introduction">
                    <h2>简介</h2>
                    <p>欢迎使用温控器开源项目文档。本项目旨在提供一个开源的温度控制器，用于简单的温度控制应用，例如：米酒制作、家庭发酵等...</p>
                </section>

                <section id="hardware">
                    <h2>硬件架构</h2>
                    <h3>核心硬件</h3>
                    <p>温控器硬件以雅特力的AT32F415CCT7单片机为核心，SHT30传感器检测温湿度，OLED屏幕用于控制系统显示。</p>
                    <h3>外围电路</h3>
                    <p>外围电路包括了高耐压的DC/DC路、PWM加热器控制、按键输入、串口数据输入输出和声光提示等外围电路，外部输入电压最高支持直流24V输入，具备防接反功能。</p>
                    <h3>接口定义</h3>
                    <p>MCU IO配置</p>
                    <table class="pin-table">
                        <tr>
                            <th>引脚号</th>
                            <th>引脚名称</th>
                            <th>引脚类型</th>
                            <th>GPIO结构</th>
                            <th>信号名称</th>
                            <th>标签</th>
                        </tr>
                        <tr>
                            <td>7</td>
                            <td>NRST</td>
                            <td>I/O</td>
                            <td>-</td>
                            <td>-</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>12</td>
                            <td>PA2</td>
                            <td>I/O</td>
                            <td>-</td>
                            <td>GPIO_Output</td>
                            <td>LED</td>
                        </tr>
                        <tr>
                            <td>13</td>
                            <td>PA3</td>
                            <td>I/O</td>
                            <td>-</td>
                            <td>ADC1_IN3</td>
                            <td>ADC</td>
                        </tr>
                        <tr>
                            <td>16</td>
                            <td>PA6</td>
                            <td>I/O</td>
                            <td>-</td>
                            <td>TMR10_CH1</td>
                            <td>PWM</td>
                        </tr>
                        <tr>
                            <td>20</td>
                            <td>PB2</td>
                            <td>I/O</td>
                            <td>FT</td>
                            <td>GPIO_Output</td>
                            <td>ADSET</td>
                        </tr>
                        <tr>
                            <td>21</td>
                            <td>PB10</td>
                            <td>I/O</td>
                            <td>FT</td>
                            <td>I2C2_SCL</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>22</td>
                            <td>PB11</td>
                            <td>I/O</td>
                            <td>FT</td>
                            <td>I2C2_SDA</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>30</td>
                            <td>PA9</td>
                            <td>I/O</td>
                            <td>FT</td>
                            <td>USART1_TX</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>31</td>
                            <td>PA10</td>
                            <td>I/O</td>
                            <td>-</td>
                            <td>USART1_RX</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>34</td>
                            <td>PA13</td>
                            <td>I/O</td>
                            <td>FT</td>
                            <td>DEBUG_JTMS_SWDIO</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>37</td>
                            <td>PA14</td>
                            <td>I/O</td>
                            <td>FT</td>
                            <td>DEBUG_JTCK_SWCLK</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>39</td>
                            <td>PB3</td>
                            <td>I/O</td>
                            <td>FT</td>
                            <td>GPIO_Input</td>
                            <td>K2</td>
                        </tr>
                        <tr>
                            <td>40</td>
                            <td>PB4</td>
                            <td>I/O</td>
                            <td>FT</td>
                            <td>GPIO_Input</td>
                            <td>BUTTON</td>
                        </tr>
                        <tr>
                            <td>41</td>
                            <td>PB5</td>
                            <td>I/O</td>
                            <td>FT</td>
                            <td>GPIO_Input</td>
                            <td>K1</td>
                        </tr>
                        <tr>
                            <td>42</td>
                            <td>PB6</td>
                            <td>I/O</td>
                            <td>FT</td>
                            <td>I2C1_SCL</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>43</td>
                            <td>PB7</td>
                            <td>I/O</td>
                            <td>FT</td>
                            <td>I2C1_SDA</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>44</td>
                            <td>BOOT0</td>
                            <td>I</td>
                            <td>-</td>
                            <td>-</td>
                            <td></td>
                        </tr>
                        <tr>
                            <td>46</td>
                            <td>PB9</td>
                            <td>I/O</td>
                            <td>FT</td>
                            <td>TMR11_CH1</td>
                            <td>TONE</td>
                        </tr>
                    </table>

                    <div class="interface-note">
                        <p><strong>接口功能说明：</strong></p>
                        <ul>
                            <li>I2C1 ---> OLED（显示屏）</li>
                            <li>I2C2 ---> 温度传感器</li>
                            <li>TONE ---> 音频输出</li>
                            <li>PWM  ---> 调温PWM输出</li>
                        </ul>
                    </div>
                </section>

                <section id="software">
                    <h2>软件架构</h2>
                    <h3>系统框架</h3>
                    <p>使用了FreeRTOS嵌入式实时操作系统作为温控器的软件控制核心，通过调用测量任务、显示任务、按键任务实现温控器系统功能。</p>
                    <h3>核心功能</h3>
                    <p>温控器主要有两大模式：温度计模式和温控器模式。温度计模式下，只进行温度湿度数据的测量和显示，不对加热器进行控制，具备定时待机功能，适合使用电池长时间工作。温控器模式下，系统可以对加热器进行控制，实现温度恒定。温控器模式下主机一直通电工作，不能进入待机省电模式，但是可以设定屏幕保护时间，无按键操作一定时间后，可以关闭屏幕，恒温控制依旧运行，以延长OLED屏幕寿命。</p>
                    <h3>通信协议</h3>
                    <p>系统对外通信接口采用串口模式，通过一个3.5mm插座对外输出温度数据，通信速率为115200bps，数据格式为：传感器1,传感器2\r\n，如果菜单设置2个传感器，则发送2个数据，如果设置为单传感器，则发送1个数据。</p>
                </section>

                <section id="usage">
                    <h2>使用方法</h2>
                    <h3>基本操作</h3>
                    <table class="pin-table">
                        <tr>
                            <th>键名</th>
                            <th>控制界面</th>
                            <th>设置界面</th>
                        </tr>
                        <tr>
                            <td>button长按</td>
                            <td>切换到菜单设置界面</td>
                            <td>保存当前参数并返回控制界面</td>
                        </tr>
                        <tr>
                            <td>button单击</td>
                            <td>启动/停止恒温控制</td>
                            <td>切换当前调整参数</td>
                        </tr>
                        <tr>
                            <td>左键单击</td>
                            <td>关闭告警提示音</td>
                            <td>参数减1</td>
                        </tr>
                        <tr>
                            <td>右键单击</td>
                            <td>关闭告警提示音</td>
                            <td>参数加1</td>
                        </tr>
                        <tr>
                            <td>左键长按</td>
                            <td>返回控制界面</td>
                            <td>部分参数快速增减</td>
                        </tr>
                        <tr>
                            <td>右键长按</td>
                            <td>进入温度曲线界面</td>
                            <td>部分参数快速增减</td>
                        </tr>
                    </table>
                    <p class="note"><strong>注意：</strong>长按button按钮开机，可以清除用户参数</p>

                    <h3>参数设置</h3>
                    <table class="pin-table">
                        <tr>
                            <th>参数名</th>
                            <th>说明</th>
                            <th>选项</th>
                        </tr>
                        <tr>
                            <td>mode</td>
                            <td>设备模式</td>
                            <td>temp: 温湿度计模式<br>ctrl: 温控器模式</td>
                        </tr>
                        <tr>
                            <td>SETt</td>
                            <td>温控器目标温度设置</td>
                            <td>-</td>
                        </tr>
                        <tr>
                            <td>ALAt</td>
                            <td>告警温度设置</td>
                            <td>-</td>
                        </tr>
                        <tr>
                            <td>time</td>
                            <td>温控定时器设置</td>
                            <td>-</td>
                        </tr>
                        <tr>
                            <td>Kp</td>
                            <td>温控参数设置</td>
                            <td>-</td>
                        </tr>
                        <tr>
                            <td>Ki</td>
                            <td>温控参数设置</td>
                            <td>-</td>
                        </tr>
                        <tr>
                            <td>Kd</td>
                            <td>温控参数设置</td>
                            <td>-</td>
                        </tr>
                        <tr>
                            <td>Sa_t</td>
                            <td>屏幕保护时间设置</td>
                            <td>单位：分钟</td>
                        </tr>
                        <tr>
                            <td>Ct_t</td>
                            <td>自动待机时间设置</td>
                            <td>单位：秒</td>
                        </tr>
                        <tr>
                            <td>IC_s</td>
                            <td>传感器选择</td>
                            <td>A: 内置<br>B: 外置<br>A+B: 内置外置同时工作</td>
                        </tr>
                    </table>

                    <div class="interface-note">
                        <p><strong>传感器工作模式说明：</strong></p>
                        <ul>
                            <li>温控模式下：
                                <ul>
                                    <li>选择内置传感器：温控以内置传感器参数控制</li>
                                    <li>选择外置传感器：温控以外置传感器参数控制</li>
                                    <li>选择内置+外置：温控以外置传感器参数控制</li>
                                </ul>
                            </li>
                            <li>测量曲线显示也按照上述规定执行</li>
                        </ul>
                    </div>
                </section>

                <section id="modify">
                    <h2>程序修订记录</h2>
                    <h3>版本历史</h3>
                    <ul class="version-list">
                        <li>
                            <h4>2024年12月</h4>
                            <ul>
                                <li><strong>2024.12.26</strong>
                                    <ul>
                                        <li>修改屏幕保护机制
                                            <ul></ul>
                                            <li>屏幕保护时间小于5分钟，1分钟后降低亮度；</li>
                                            <li>屏幕保护时间大于5分钟，则1/3屏保时间后降低亮度；</li>
                                            <li>屏幕保护时间到，则关闭屏幕。</li>
                                            </ul>
                                        </li>
                                        <li>传感器参数读取错误处理
                                            <ul></ul>
                                            <li>增加数据错误计数器，超过设定值后，关闭温控系统，屏幕显示并发出提示音</li>
                                            <li>传输恢复后，屏幕恢复正常</li>
                                            </ul>
                                        </li>
                                    </ul>
                                </li>
                                <li><strong>2024.12.23</strong>
                                    <ul>
                                        <li>设置菜单增加滤波器选项：
                                            <ul></ul>
                                                <li>No : 不使用滤波器</li>
                                                <li>Yes: 使用滤波器</li>
                                            </ul>
                                        </li>
                                        <li>用户数据结构调整：
                                            <ul>
                                                <li>在不增加数据结构大小的情况下，保存更多的用户参数</li>
                                            </ul>
                                        </li>
                                    </ul>
                                </li>
                                <li><strong>2024.12.22</strong>
                                    <ul>
                                        <li>卡尔曼滤波处理：
                                            <ul>
                                                <li>提高测量稳定度</li>
                                                <li>避免测量数据毛刺</li>
                                                <li>温度计模式下不使用滤波器处理数据</li>
                                            </ul>
                                        </li>
                                        <li>更新kalmanfilter滤波器驱动:
                                            <ul>
                                                <li>使用了面对象编程方式</li>
                                                <li>支持多传感器滤波</li>
                                                <li>减少程序的耦合度</li>
                                            </ul>
                                        </li>
                                    </ul>
                                </li>
                                <li><strong>2024.12.19</strong>
                                    <ul>
                                        <li>优化温度曲线刷新机制，减少I2C数据通信量</li>
                                        <li>增加板载温度传感器校正系数，修正PCB测量误差</li>
                                    </ul>
                                </li>
                                <li><strong>2024.12.18</strong>
                                    <ul>
                                        <li>增加不同时间周期的温度曲线显示功能
                                            <ul>
                                                <li>支持周期：1s、2s、5s、15s、30s、60s、300s、600s、900s</li>
                                                <li>最长可显示31小时15分钟的测量值曲线</li>
                                            </ul>
                                        </li>
                                    </ul>
                                </li>
                                <li><strong>2024.12.14</strong>
                                    <ul>
                                        <li>修正温控器模式下待机模式的逻辑判断错误</li>
                                    </ul>
                                </li>
                                <li><strong>2024.12.13</strong>
                                    <ul>
                                        <li>完善温度计和温控器功能：
                                            <ul>
                                                <li>温度计模式下支持自动休眠</li>
                                                <li>按键唤醒功能</li>
                                                <li>超温报警功能</li>
                                            </ul>
                                        </li>
                                        <li>修正部分参数调整和显示bug</li>
                                    </ul>
                                </li>
                                <li><strong>2024.12.12</strong>
                                    <ul>
                                        <li>完成A、B双传感器工作代码：
                                            <ul>
                                                <li>支持A工作、B工作和A+B工作三种模式</li>
                                                <li>界面可切换显示AB两组数据</li>
                                            </ul>
                                        </li>
                                        <li>完成系统所有参数的调整、设置代码</li>
                                    </ul>
                                </li>
                                <li><strong>2024.12.11</strong>
                                    <ul>
                                        <li>新增8x16等宽英文字库，用于参数设置菜单显示</li>
                                        <li>添加菜单项显示框架，实现单页面参数设置</li>
                                        <li>重新设计系统参数结构体：
                                            <ul>
                                                <li>支持双传感器</li>
                                                <li>支持温度计和温控器双模式</li>
                                            </ul>
                                        </li>
                                        <li>更换为Flexible button按键驱动模块</li>
                                    </ul>
                                </li>
                                <li><strong>2024.12.02</strong>
                                    <ul>
                                        <li>添加SHT30温湿度驱动，支持可配置测温IC类型</li>
                                    </ul>
                                </li>
                            </ul>
                        </li>
                        <li>
                            <h4>2024年11月</h4>
                            <ul>
                                <li><strong>2024.11.28</strong>
                                    <ul>
                                        <li>增加屏幕保护功能：
                                            <ul>
                                                <li>5分钟无操作：进入低亮度显示</li>
                                                <li>60分钟无操作：关闭屏幕</li>
                                                <li>任意按键可恢复显示</li>
                                            </ul>
                                        </li>
                                        <li>降低提示音音量，减少耗电</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.27</strong>
                                    <ul>
                                        <li>优化music函数，支持播放任意数量音符的旋律</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.26</strong>
                                    <ul>
                                        <li>温度曲线界面增加Y轴温度量程调节功能：
                                            <ul>
                                                <li>以设定温度为中心</li>
                                                <li>支持±0.5至±20的调节范围</li>
                                            </ul>
                                        </li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.25</strong>
                                    <ul>
                                        <li>增加温度曲线界面，支持长按切换</li>
                                        <li>优化部分代码</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.23</strong>
                                    <ul>
                                        <li>控制界面动态显示电压和当前PID组</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.22</strong>
                                    <ul>
                                        <li>修正PID参数返回按键处理bug</li>
                                        <li>添加用户自定义PID参数设置</li>
                                        <li>添加参数重置功能</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.21</strong>
                                    <ul>
                                        <li>添加串口发送功能，用于PID调试</li>
                                        <li>增加三组用户自定义PID参数</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.20</strong>
                                    <ul>
                                        <li>屏幕I2C驱动改用AT32F415 pack的中间件API</li>
                                        <li>整理分类全局变量</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.19</strong>
                                    <ul>
                                        <li>增加断电参数保存功能</li>
                                        <li>优化按键处理，支持长按快速调整</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.18</strong>
                                    <ul>
                                        <li>修复音频杂音bug</li>
                                        <li>增加定时停止和高温告警功能</li>
                                        <li>完善设置菜单和按键处理</li>
                                        <li>整理配置文件结构</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.17</strong>
                                    <ul>
                                        <li>添加参数设定和界面切换功能</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.16</strong>
                                    <ul>
                                        <li>完成PID初步整定，控制精度达到±0.3℃</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.15</strong>
                                    <ul>
                                        <li>电压采集添加Kalman滤波</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.14</strong>
                                    <ul>
                                        <li>添加SHT40温湿度驱动</li>
                                        <li>优化music函数</li>
                                        <li>添加电源电压测量</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.13</strong>
                                    <ul>
                                        <li>添加OLED显示模块</li>
                                        <li>添加并修复freertos模块</li>
                                    </ul>
                                </li>
                                <li><strong>2024.11.12</strong>
                                    <ul>
                                        <li>初始版本：
                                            <ul>
                                                <li>搭建基础程序框架</li>
                                                <li>完成音频发生单元</li>
                                                <li>完成开关状态机移植</li>
                                            </ul>
                                        </li>
                                    </ul>
                                </li>
                            </ul>
                        </li>
                    </ul>
                </section>

                <section id="help">
                    <h2>帮助</h2>
                    <h3>常见问题</h3>
                    <p>遇到温度显示异常，可以重新上电恢复。</p>
                    <h3>技术支持</h3>
                    <p>https://gitee.com/admvip/at32-f415-thermostat.git</p>
                    <p>欢迎使用Gitee平台进行技术交流，欢迎提出问题和建议。</p>
                    <h3>联系方式</h3>
                    <p>hu1216@sina.com</p>
                </section>
            </main>

            <footer>
                <p>&copy; 2024 温控器开源项目</p>
                <a href="https://gitee.com/admvip/at32-f415-thermostat.git" class="footer-icon" target="_blank" title="访问 Gitee">
                    <img src="https://gitee.com/static/images/logo-black.svg" alt="Gitee">
                </a>
            </footer>
        </div>
    </div>
</body>
</html> 